제출 #389834

#제출 시각아이디문제언어결과실행 시간메모리
389834ogibogi2004Pinball (JOI14_pinball)C++14
0 / 100
1 ms204 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long const ll INF=2e15; const int MAXM=1e5+6; struct device { ll row,a,b,c,d; bool operator<(device const& other)const { return c<other.c; } }; device d[MAXM]; int n,m; bool check(int mask) { if(mask==0)return 0; vector<device>v; int maxj=-1; for(int j=0;j<m;j++) { if(mask&(1<<j)){v.push_back(d[j+2]);maxj=j+2;} } sort(v.begin(),v.end()); for(int i=0;i<v.size();i++) { if(v[i].row==maxj) { for(int j=i-1;j>=0;j--) { if(v[j].row<v[j+1].row) { return 0; } } for(int j=i+1;j<v.size();j++) { if(v[j].row<v[j-1].row) { return 0; } } } } return 1; } int main() { cin>>m>>n; for(int i=2;i<m+2;i++) { d[i].row=i; cin>>d[i].a>>d[i].b>>d[i].c>>d[i].d; } ll ans=INF; for(int mask=0;mask<(1<<m);mask++) { if(!check(mask))continue; set<int>s; for(int i=1;i<=n;i++) { int u=i; for(int j=2;j<m+2;j++) { if(mask&(1<<(j-2))) { if(d[j].a<=u&&d[j].b>=u) { u=d[j].c; } } } s.insert(u); } if(s.size()>1) { continue; } ll sum=0; for(int j=2;j<m+2;j++) { if(mask&(1<<(j-2))) { sum+=d[j].d; } } if(sum<ans)ans=sum; } if(ans==INF)cout<<"-1\n"; else cout<<ans<<endl; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

pinball.cpp: In function 'bool check(int)':
pinball.cpp:26:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<device>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |  for(int i=0;i<v.size();i++)
      |              ~^~~~~~~~~
pinball.cpp:37:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<device>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |    for(int j=i+1;j<v.size();j++)
      |                  ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...