답안 #169008

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
169008 2019-12-17T14:21:50 Z kshitij_sodani 이상한 기계 (APIO19_strange_device) C++17
5 / 100
678 ms 33976 KB
#include <iostream>
#include <bits/stdc++.h>
#include <stdio.h>
using namespace std;
typedef   unsigned long long int llo;
#define pb push_back

#define a first
#define b second

#include <iostream>
#include <fstream>
#include <set>
#include <map>
#include <algorithm>
#include <vector>
llo inf=10000000000000000000;

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	llo n,aa,bb;
	cin>>n>>aa>>bb;
	pair<llo,llo> it[n];
	for(llo i=0;i<n;i++){
		cin>>it[i].a>>it[i].b;
	}
	if((bb+1)%aa==0){
		
		vector<pair<llo,llo>> tt;
		for(llo i=0;i<n;i++){
			it[i].b%=bb;
			it[i].a%=bb;
			if(it[i].a<=it[i].b){
				tt.pb(make_pair(it[i].a,it[i].b));
			}
			else{
				tt.pb(make_pair(it[i].a,aa-1));
				tt.pb(make_pair(0,it[i].b));
			}

		}
		sort(tt.begin(),tt.end());
		llo tot=0;
		llo st,end;
		for(llo i=0;i<tt.size();i++){
			if(i==0){
				st=tt[i].a;
				end=tt[i].b;
			}
			else{
				if(tt[i].a<=end){
					end=max(end,tt[i].b);
				}
				else{
					tot+=end-st+1;
					st=tt[i].a;
					end=tt[i].b;
				}
			}
		}
		tot+=end-st+1;
		cout<<tot<<endl;
	}
	else{

			vector<pair<llo,llo>> tt;
			llo num[2];
			num[0]=0;
			num[1]=0;
			//llo co=0;
			llo aaa;
			llo aab;

			llo cc=aa*bb;
		//	int co=aa;
			aaa=aa%(1000000000);
			aab=(aa-aaa)/(1000000000);

			llo bba;
			llo bbb;
			bba=bb%(1000000000);
			bbb=(bb-bba)/(1000000000);
			num[0]+=aaa*bba;

			llo ccc=aaa*bbb;
			ccc=(ccc%1000000000)*(1000000000);
			num[0]+=ccc%1000000000;
			num[1]+=ccc/1000000000;

			ccc=aab*bba;
			ccc=(ccc%1000000000)*(1000000000);
			num[0]+=ccc%1000000000;
			num[1]+=ccc/1000000000;

			llo x=num[0]/1000000000000000000;

			num[0]%=1000000000000000000;
			num[1]+=x;
			num[1]+=bbb*aab;
			llo co=0;
			llo ac=aa;
			while(ac){
				ac/=10;
				co++;
			}
			llo bc=bb;
			while(bc){
				bc/=10;
				co++;
			}
		//	cout<<"done";
			for(llo i=0;i<n;i++){
				if(co<=19){
					it[i].b%=aa*bb;
				}
				if(co<=19){
					it[i].a%=aa*bb;
				}
			//	it[i].b%=bb;

				
			//	it[i].a%=bb;
				//it[i].a%=cc;
				if(it[i].a<=it[i].b){
					tt.pb(make_pair(it[i].a,it[i].b));
				}
				else{
					tt.pb(make_pair(it[i].a,inf));
					tt.pb(make_pair(0,it[i].b));
				}

			}
			sort(tt.begin(),tt.end());
			llo tot[2];
			tot[0]=0;
			tot[1]=0;
			llo st,end;
			for(llo i=0;i<tt.size();i++){
				if(i==0){
					st=tt[i].a;
					end=tt[i].b;
				}
				else{
					if(tt[i].a<=end){
						end=max(end,tt[i].b);
					}
					else{
						if(end!=inf){
							tot[0]+=end-st+1;
						}
						else{
							tot[0]+=num[0];
							tot[1]+=num[1];
							if(tot[0]>=st){

								tot[0]-=st;
							}
							else{
								st-=tot[0];

								tot[0]=0;
								tot[1]-=1;
								tot[0]+=(1000000000000000000-st);
								st/=1000000000;
								tot[1]-=st;
							}
							x=tot[0]/1000000000000000000;

							tot[0]%=1000000000000000000;
							tot[1]+=x;
						}
						//tot+=end-st+1;
						st=tt[i].a;
						end=tt[i].b;
					//	cout<<tot[1]<<" "<<tot[0]<<endl;
					}

				}
			}
		//	cout<<aaa<<" "<<aab<<" "<<bba<<" "<<bbb<<endl;
		//	cout<<num[1]<<" "<<num[0]<<endl;
			if(end!=inf){
				tot[0]+=end-st+1;
			}
			else{
				tot[0]+=num[0];
				tot[1]+=num[1];
				if(tot[0]>=st){

					tot[0]-=st;
				}
				else{
					st-=tot[0];

					tot[0]=0;
					tot[1]-=1;
					tot[0]+=(1000000000000000000-st);
					st/=1000000000;
					tot[1]-=st;
				}
				x=tot[0]/1000000000000000000;

				tot[0]%=1000000000000000000;
				tot[1]+=x;
			}
		//	cout<<tot[1]<<" "<<tot[0]<<endl;
			x=tot[0]/1000000000000000000;

			tot[0]%=1000000000000000000;
			tot[1]+=x;
			if(tot[1]!=0){
				cout<<tot[1];
				ac=tot[0];
				co=0;
				while(ac){
					ac/=10;
					co++;
				}
				for(int i=0;i<co;i++){
					cout<<0;
				}
			}
			cout<<tot[0];
			cout<<endl;
		
	}

}

Compilation message

strange_device.cpp:18:9: warning: integer constant is so large that it is unsigned
 llo inf=10000000000000000000;
         ^~~~~~~~~~~~~~~~~~~~
strange_device.cpp: In function 'int main()':
strange_device.cpp:221:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<co;i++){
                 ~^~~
strange_device.cpp:76:8: warning: unused variable 'cc' [-Wunused-variable]
    llo cc=aa*bb;
        ^~
strange_device.cpp:139:11: warning: 'end' may be used uninitialized in this function [-Wmaybe-uninitialized]
    llo st,end;
           ^~~
strange_device.cpp:195:8: warning: 'st' may be used uninitialized in this function [-Wmaybe-uninitialized]
      st-=tot[0];
      ~~^~~~~~~~
strange_device.cpp:46:10: warning: 'end' may be used uninitialized in this function [-Wmaybe-uninitialized]
   llo st,end;
          ^~~
strange_device.cpp:63:6: warning: 'st' may be used uninitialized in this function [-Wmaybe-uninitialized]
   tot+=end-st+1;
   ~~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 8 ms 888 KB Output is correct
3 Correct 8 ms 888 KB Output is correct
4 Incorrect 2 ms 376 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Incorrect 2 ms 376 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 3 ms 376 KB Output is correct
3 Correct 3 ms 504 KB Output is correct
4 Correct 3 ms 376 KB Output is correct
5 Correct 453 ms 33436 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 606 ms 33564 KB Output is correct
3 Incorrect 617 ms 33620 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 606 ms 33564 KB Output is correct
3 Incorrect 617 ms 33620 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 606 ms 33564 KB Output is correct
3 Incorrect 617 ms 33620 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 66 ms 7840 KB Output is correct
3 Correct 68 ms 5352 KB Output is correct
4 Correct 678 ms 33976 KB Output is correct
5 Correct 68 ms 7792 KB Output is correct
6 Correct 68 ms 7792 KB Output is correct
7 Correct 66 ms 7792 KB Output is correct
8 Correct 69 ms 7792 KB Output is correct
9 Correct 67 ms 6640 KB Output is correct
10 Correct 66 ms 7792 KB Output is correct
11 Correct 73 ms 5744 KB Output is correct
12 Incorrect 60 ms 7792 KB Output isn't correct
13 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 8 ms 888 KB Output is correct
3 Correct 8 ms 888 KB Output is correct
4 Incorrect 2 ms 376 KB Output isn't correct
5 Halted 0 ms 0 KB -