답안 #346108

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
346108 2021-01-09T06:26:51 Z kshitij_sodani Broken Device (JOI17_broken_device) C++14
100 / 100
51 ms 2824 KB
//#pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef long long llo;
#define mp make_pair
#define pb push_back
#define a first 
#define b second
#define endl '\n'
 
#include "Annalib.h"
int vis[151];
int ans[151];
/*vector<llo> yy={0,0,0,0,0,0,
	0,0,0,0,0,0,
	0,0,0,0,0,0,
	0,0,0,0,0,0,
	0,0,0,0,0,0,
	0,0,0,0,0,0,
1,1,1,1,1,1,
1,1,1,1,1,1,
1,1,1,1,1,1,
1,1,1,1,1,1};*/
void Anna( int n, long long x, int k, int pp[] ){
	for(int i=0;i<n;i++){
		vis[i]=0;
		ans[i]=0;
	}
	//x=x^217328824795767654;
	for(int i=0;i<k;i++){
		vis[pp[i]]=1;		
	}
	vector<int> kk;
	for(int i=0;i<n;i++){
		if(vis[i]==0){
			kk.pb(i);
		}
	}
	int cot=0;
	llo mm=0;
	for(int i=0;i<60;i++){
		if((1LL<<i)&x){
			mm+=1;
		}
	}
	//while(cot<kk.size()){
		int cur=0;
		int la=-1;
		for(int i=0;i<n;i++){
			ans[i]=0;
		}
		for(int i=0;i<n;i+=3){
			if(vis[i]+vis[i+1]+vis[i+2]>1){
				continue;
			}
			if(cur>=60){
				break;
			}
			if(vis[i]+vis[i+1]+vis[i+2]==0){
				if((x&(1LL<<cur)) and (x&(1LL<<(cur+1)))){
					ans[i]=1;
					ans[i+1]=1;
					ans[i+2]=1;
				}
				if((x&(1LL<<cur)) and !(x&(1LL<<(cur+1)))){
					ans[i+1]=1;
					ans[i+2]=1;
				}
				if(!(x&(1LL<<cur)) and !(x&(1LL<<(cur+1)))){
					ans[i]=1;
				}
				if(!(x&(1LL<<cur)) and (x&(1LL<<(cur+1)))){
					ans[i]=1;
					ans[i+2]=1;
				}
				cur+=2;
			}
			else{
				if(x&(1LL<<cur)){
					if(vis[i+2]==0){
						ans[i+2]=1;
						cur+=1;
					}
					else{
						ans[i]=1;
						ans[i+1]=1;
						cur+=1;
					}
				}
				else{
					if(vis[i+1]==0){
						ans[i+1]=1;
						cur+=1;
					}
					else{
						if((x&(1LL<<cur)) and (x&(1LL<<(cur+1)))){
							ans[i]=1;
							ans[i+1]=1;
							ans[i+2]=1;
						}
						if((x&(1LL<<cur)) and !(x&(1LL<<(cur+1)))){
							ans[i+1]=1;
							ans[i+2]=1;
						}
						if(!(x&(1LL<<cur)) and !(x&(1LL<<(cur+1)))){
							ans[i]=1;
						}
						if(!(x&(1LL<<cur)) and (x&(1LL<<(cur+1)))){
							ans[i]=1;
							ans[i+2]=1;
						}
						cur+=2;
					}

				}


			}


		}
  		for( int i = 0; i < n; i++ ){
	   		 Set( i, ans[i] );
	  	}
 
 
	  	return;
 
	//}
	/*cur=-1;
	for(int i=0;i<n;i++){
		ans[i]=0;
	}
	for(int i=0;i<n;i++){
		if(cur==60){
			break;
		}
		if(vis[i]==0){
			if(cur==-1){
				if(i%2==1){
					cur++;
					ans[i]=1;
				}
				continue;
			}
			if(x&(1LL<<cur)){
				if(i%2==0){
					ans[i]=1;
					cur++;
				}
			}
			else{
				if(i%2==1){
					ans[i]=1;
					cur++;
				}
			}
		}
	}
 
	 for( int i = 0; i < n; i++ ){
	   		 Set( i, ans[i] );
	  	}
*/
	 
}
//#pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef long long llo;
#define mp make_pair
#define pb push_back
#define a first 
#define b second
#define endl '\n'
 
 
#include "Brunolib.h"
/*vector<llo> yy2={0,0,0,0,0,0,
	0,0,0,0,0,0,
	0,0,0,0,0,0,
	0,0,0,0,0,0,
	0,0,0,0,0,0,
	0,0,0,0,0,0,
1,1,1,1,1,1,
1,1,1,1,1,1,
1,1,1,1,1,1,
1,1,1,1,1,1};*/
long long Bruno( int n, int aa[] ){
 
 
	llo ans=0;
	llo cur=0;
	for(int i=0;i<n;i+=3){
		if(aa[i]+aa[i+1]+aa[i+2]==0){
			continue;
		}
		if(cur>=60){
			break;
		}
		if(aa[i]==0 and aa[i+1]==0 and aa[i+2]==1){
			ans+=(1LL<<cur);
			cur++;
		}
		if(aa[i]==0 and aa[i+1]==1 and aa[i+2]==0){
			cur++;
		}
		if(aa[i]==0 and aa[i+1]==1 and aa[i+2]==1){
			ans+=(1LL<<cur);
			cur+=2;
		}
		if(aa[i]==1 and aa[i+1]==0 and aa[i+2]==0){
			cur+=2;
		}
		if(aa[i]==1 and aa[i+1]==0 and aa[i+2]==1){
			ans+=(1LL<<(cur+1));
			cur+=2;
		}
		if(aa[i]==1 and aa[i+1]==1 and aa[i+2]==0){
			ans+=(1LL<<cur);
			cur++;
		}
		if(aa[i]==1 and aa[i+1]==1 and aa[i+2]==1){
			ans+=(1LL<<cur)+(1LL<<(cur+1));
			cur+=2;
		}

	}
	//cout<<ans<<endl;
		
		//ans=(ans^217328824795767654);
	return ans;
	/*if(x%2==0){
		for(int i=0;i<ss.size();i++){
			if((ss[i]%2==1)){
				ans+=(1LL<<i);
			}
		}
	}
	else{
		for(int i=0;i<ss.size();i++){
			if((ss[i]%2==0)){
				ans+=(1LL<<i);
			}
		}
	}*/
 
 
 
 
  return ans;
}
 
//g++ -std=c++14 -O2 -o aa grader.cpp Anna.cpp Bruno.cpp

Compilation message

Anna.cpp: In function 'void Anna(int, long long int, int, int*)':
Anna.cpp:39:6: warning: unused variable 'cot' [-Wunused-variable]
   39 |  int cot=0;
      |      ^~~
Anna.cpp:48:7: warning: unused variable 'la' [-Wunused-variable]
   48 |   int la=-1;
      |       ^~
# 결과 실행 시간 메모리 Grader output
1 Correct 41 ms 2824 KB Output is correct - L* = 40
2 Correct 41 ms 2492 KB Output is correct - L* = 40
3 Correct 41 ms 2620 KB Output is correct - L* = 40
4 Correct 41 ms 2620 KB Output is correct - L* = 40
5 Correct 41 ms 2688 KB Output is correct - L* = 40
6 Correct 41 ms 2688 KB Output is correct - L* = 40
7 Correct 41 ms 2688 KB Output is correct - L* = 40
8 Correct 41 ms 2688 KB Output is correct - L* = 40
9 Correct 41 ms 2492 KB Output is correct - L* = 40
10 Correct 43 ms 2696 KB Output is correct - L* = 40
11 Correct 41 ms 2688 KB Output is correct - L* = 40
12 Correct 41 ms 2620 KB Output is correct - L* = 40
13 Correct 41 ms 2620 KB Output is correct - L* = 40
14 Correct 41 ms 2816 KB Output is correct - L* = 40
15 Correct 41 ms 2620 KB Output is correct - L* = 40
16 Correct 45 ms 2764 KB Output is correct - L* = 40
17 Correct 43 ms 2688 KB Output is correct - L* = 40
18 Correct 41 ms 2688 KB Output is correct - L* = 40
19 Correct 41 ms 2492 KB Output is correct - L* = 40
20 Correct 42 ms 2644 KB Output is correct - L* = 40
21 Correct 51 ms 2492 KB Output is correct - L* = 40
22 Correct 41 ms 2620 KB Output is correct - L* = 40
23 Correct 41 ms 2620 KB Output is correct - L* = 40
24 Correct 41 ms 2816 KB Output is correct - L* = 40
25 Correct 41 ms 2636 KB Output is correct - L* = 40
26 Correct 40 ms 2492 KB Output is correct - L* = 40
27 Correct 41 ms 2688 KB Output is correct - L* = 40
28 Correct 41 ms 2620 KB Output is correct - L* = 40
29 Correct 41 ms 2688 KB Output is correct - L* = 40
30 Correct 40 ms 2512 KB Output is correct - L* = 40
31 Correct 41 ms 2620 KB Output is correct - L* = 40
32 Correct 41 ms 2688 KB Output is correct - L* = 40
33 Correct 41 ms 2768 KB Output is correct - L* = 40
34 Correct 41 ms 2492 KB Output is correct - L* = 40
35 Correct 40 ms 2492 KB Output is correct - L* = 40
36 Correct 41 ms 2620 KB Output is correct - L* = 40
37 Correct 41 ms 2748 KB Output is correct - L* = 40
38 Correct 41 ms 2492 KB Output is correct - L* = 40
39 Correct 41 ms 2688 KB Output is correct - L* = 40
40 Correct 44 ms 2824 KB Output is correct - L* = 40