POJ 1456 Supermercado informe de resolución
Ideas resolución de problemas: la idea central es codicioso. Aquí sólo voy a resolver los problemas de la violencia. Los datos premio en fila descendente, premio si se colocó el mismo plazo al descender fila, tras el recorrido de la gran prioridad de premios para encontrar la posición (un día).
Otros métodos de procesamiento previo, simplemente codiciosos de los datos, con el código de retención.
#include<iostream>
#include<math.h>
#include<iomanip>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<iomanip>
#include<algorithm>
#include<queue>
#include<cstring>
#include<string>
#include<map>
#include<stack>
#include<stdio.h>
#include<cstdio>
#include<stdlib.h>
#include<fstream>
#include<iomanip>
#pragma warning(disable:4996)
#define INF 0x3f3f3f3f
#define ll long long
#define PI acos(-1.0)
const int N = 1000010;
const int maxn = 1e9;
using namespace std;
struct node {
int p, d;
}a[10005];
bool cmp(node a, node b)
{
if (a.p > b.p)
return true;
else if (a.p == b.p)
return a.d > b.d;
return false;
}
int visit[10005];
int main()
{
int n;
while (scanf("%d", &n) != EOF)
{
memset(visit, 0, sizeof(visit));
for (int i = 1; i <= n; i++)
{
scanf("%d%d", &a[i].p, &a[i].d);
}
sort(a + 1, a + n + 1, cmp);
int sum = 0;
for (int i = 1; i <= n; i++)
{
for (int j = a[i].d; j >= 1; j--)
{
if (visit[j] == 0)
{
visit[j] = 1;
sum += a[i].p;
break;
}
}
}
printf("%d\n", sum);
}
}