Submission #1159235

#TimeUsernameProblemLanguageResultExecution timeMemory
1159235dibamboo23The Potion of Great Power (CEOI20_potion)C++20
38 / 100
1961 ms4356 KiB
#include <bits/stdc++.h> using namespace std; #define sz size() const int N=(int)1e5+3; int h[N],a[N],b[N]; int cnt[N],cnt1[N]; int n,d; int m; void init(int N, int D, int H[]) { n=N; d=D; for(int i=0;i<N;i++)h[i]=H[i]; } void curseChanges(int U, int A[], int B[]) { m=U; for(int i=0;i<m;i++)a[i]=A[i],b[i]=B[i]; } int question(int x, int y, int v) { // cerr<<x<<" "<<y<<" "<<v<<"\n"; for(int i=0;i<v;i++){ if(a[i]==x)cnt[b[i]]^=1; else if(b[i]==x)cnt[a[i]]^=1; if(a[i]==y)cnt1[b[i]]^=1; else if(b[i]==y)cnt1[a[i]]^=1; } vector<int>vec,vec1; for(int i=0;i<v;i++){ if(cnt[a[i]]==1){ vec.push_back(h[a[i]]); cnt[a[i]]=0; } if(cnt[b[i]]==1){ vec.push_back(h[b[i]]); cnt[b[i]]=0; } if(cnt1[a[i]]==1){ vec1.push_back(h[a[i]]); cnt1[a[i]]=0; } if(cnt1[b[i]]==1){ vec1.push_back(h[b[i]]); cnt1[b[i]]=0; } } if(vec.empty()||vec1.empty())return (int)1e9; sort(vec.begin(),vec.end()); sort(vec1.begin(),vec1.end()); // for(auto to:vec1)cout<<to<<" "; // cout<<"\n"; // for(auto to:vec)cout<<to<<" "; // cout<<"\n"; int mn=(int)1e9; int j=0; for(auto to:vec){ while(j<(int)vec1.sz-1&&vec1[j]<to)j++; mn=min(mn,abs(vec1[j]-to)); if(j>0)mn=min(mn,abs(to-vec1[j-1])); } return mn; } // int main() { // int N, D, U, Q; // std::ios::sync_with_stdio(false); std::cin.tie(NULL); // std::cin >> N >> D >> U >> Q; // // int *F = new int[N]; // for (int i=0; i<N; i++) // std::cin >> F[i]; // init(N, D, F); // // int *A = new int[U], *B = new int[U]; // for (int i=0; i<U; i++) { // std::cin >> A[i] >> B[i]; // } // curseChanges(U, A, B); // // bool correct = true; // for (int i=0; i<Q; i++) { // int X,Y,V,CorrectAnswer; // std::cin >> X >> Y >> V >> CorrectAnswer; // int YourAnswer = question(X,Y,V); // if (YourAnswer != CorrectAnswer) { // std::cout << "WA! Question: " << i // << " (X=" << X << ", Y=" << Y << ", V=" << V << ") " // << "Your answer: " << YourAnswer // << " Correct Answer: " << CorrectAnswer << std::endl; // correct = false; // } else { // std::cerr << YourAnswer << " - OK" << std::endl; // } // } // // if (correct) { // std::cout << "Correct." << std::endl; // } else std::cout << "Incorrect." << std::endl; // return 0; // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...